In a memory system using a non-volatile memory such as a NAND flash memory, repetitive rewriting causes the memory cells of the non-volatile memory to be physically worn out. This increases the probability of occurrence of read error. For read error, generally, an error correcting code is preliminarily added to data so as to perform writing, and an error correcting process is performed during reading so as to restore correct data.